package com.x.compute.core.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.x.compute.core.entity.Compute;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

/**
 * @author xuxin
 */
@Mapper
public interface ComputeMapper extends BaseMapper<Compute> {

    /**
     * 查询前置引用计算变量
     *
     * @param formId        表单id
     * @param referenceVars 引用变量集合
     * @param temp          是否临时计算
     * @return
     */
    List<Compute> listPreVars(@Param("formId") Long formId,
                              @Param("referenceVars") Collection<String> referenceVars,
                              @Param("temp") boolean temp);

    /**
     * 查询后置引用计算变量
     *
     * @param formId        表单id
     * @param referenceVars 引用变量集合
     * @param temp          是否临时计算
     * @return
     */
    List<Compute> listSufVars(@Param("formId") Long formId,
                              @Param("referenceVars") Collection<String> referenceVars,
                              @Param("temp") boolean temp);

    /**
     * 根据businessId批量查询引用计算变量
     *
     * @param formId 表单id
     * @param businessIds 业务id集
     * @param temp  是否临时计算
     * @return
     */
    List<Compute> listByBusinessIds(@Param("formId") Long formId,
                                    @Param("businessIds") Collection<String> businessIds,
                                    @Param("temp") boolean temp);


    /**
     * 根据businessId批量查询引用计算变量
     *
     * @param formId 表单id
     * @param businessIds 业务id集
     * @param temp  是否临时计算
     * @return
     */
    List<Compute> listVarValueByBusinessIds(@Param("formId") Long formId,
                                            @Param("businessIds") Collection<String> businessIds,
                                            @Param("temp") boolean temp);


    /**
     * 根据id批量查询引用计算变量
     *
     * @param ids 主键id集
     * @param temp 是否临时计算
     * @return
     */
    List<Compute> listVarValueByIds(@Param("ids") List<Long> ids,
                                    @Param("temp") boolean temp);

    /**
     * 根据formId查询临时计算集
     *
     * @param formId        表单id
     * @return
     */
    List<Compute> listComputeTemp(@Param("formId") Long formId);
}
